Bài học Scratch cho học sinh THCS

Thuật toán, luồng lệnh và sơ đồ khối

Học cách mô tả giải pháp bằng các bước rõ ràng, hiểu thứ tự thực hiện lệnh và vẽ sơ đồ để trình bày tư duy một cách trực quan.

Thuật toán là gì?

Thuật toán là một dãy các bước được mô tả rõ ràng, có thứ tự, dùng để giải quyết một vấn đề cụ thể. Thuật toán không chỉ dành cho máy tính — con người cũng dùng thuật toán mỗi ngày mà có thể không nhận ra.

Sơ đồ khối minh họa thuật toán
Sơ đồ khối giúp hình dung các bước của thuật toán một cách trực quan

Một thuật toán đúng cần đảm bảo ba điều:

💡 Ghi nhớ

Thuật toán giống như công thức nấu ăn: liệt kê nguyên liệu (đầu vào), các bước chế biến (xử lý) và món ăn hoàn thành (đầu ra).

Đầu vào, xử lý và đầu ra

Mọi thuật toán đều liên quan đến ba thành phần cơ bản:

Đầu vào (Input) Dữ liệu ban đầu cần có để bắt đầu. Ví dụ: hai số a và b.
Đầu ra (Output) Kết quả thu được sau khi xử lý. Ví dụ: tổng a + b.

Phần xử lý nằm giữa: các phép tính, so sánh, quyết định… biến đầu vào thành đầu ra mong muốn.

📌 Ví dụ — Tính điểm trung bình

Đầu vào: điểm Toán = 8, Văn = 7, Anh = 9

Xử lý: TB = (8 + 7 + 9) ÷ 3

Đầu ra: TB = 8

Luồng lệnh là gì?

Luồng lệnh (flow of control) mô tả thứ tự mà các lệnh được thực hiện trong một chương trình hoặc thuật toán. Hiểu luồng lệnh giúp bạn biết máy tính (hoặc người thực hiện) sẽ làm gì trước, làm gì sau.

Có ba dạng luồng lệnh cơ bản:

1. Tuần tự (Sequential)

Các lệnh chạy lần lượt từ trên xuống dưới, không bỏ qua bước nào.

2. Rẽ nhánh (Branching)

Tùy điều kiện đúng hay sai, chương trình chọn một trong hai (hoặc nhiều) nhánh để thực hiện.

3. Lặp (Loop)

Một nhóm lệnh được thực hiện lại nhiều lần cho đến khi đủ số lần hoặc thỏa điều kiện dừng.

Ba cấu trúc điều khiển lập trình
Ba cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp
💡 Ghi nhớ

Mọi chương trình phức tạp đều được xây dựng từ ba cấu trúc này. Nắm vững chúng là nền tảng để đọc hiểu mọi thuật toán.

Luồng lệnh tuần tự

Đây là dạng đơn giản nhất: bước 1 xong mới đến bước 2, bước 2 xong mới đến bước 3… Không có nhảy cóc hay quay lại.

📌 Ví dụ — Chuẩn bị đi học
  1. Thức dậy
  2. Đánh răng, rửa mặt
  3. Ăn sáng
  4. Mặc đồng phục
  5. Đi đến trường

Mỗi bước phải hoàn thành trước khi chuyển sang bước tiếp theo.

Bước 1: Nhập a, b ↓ Bước 2: Tính S = a + b ↓ Bước 3: In ra S ↓ Kết thúc

Luồng lệnh rẽ nhánh

Khi gặp điều kiện, thuật toán kiểm tra rồi chọn hướng đi. Cấu trúc phổ biến nhất là nếu – thì – ngược lại (if – then – else).

Sơ đồ khối cấu trúc if-then-else
Sơ đồ rẽ nhánh: nếu điều kiện đúng thì nhánh A, sai thì nhánh B
📌 Ví dụ — Xếp loại học lực

Nếu điểm TB ≥ 8 → Xếp loại Giỏi

Ngược lại, nếu điểm TB ≥ 6.5 → Xếp loại Khá

Ngược lại → Xếp loại Trung bình

Trong Scratch, khối "nếu … thì" chính là rẽ nhánh. Trong sơ đồ khối, rẽ nhánh được biểu diễn bằng hình thoi.

Luồng lệnh lặp

Vòng lặp giúp tránh việc viết lại cùng một nhóm lệnh nhiều lần. Có hai kiểu phổ biến:

Sơ đồ vòng lặp for
Sơ đồ vòng lặp: kiểm tra điều kiện rồi quay lại hoặc thoát
📌 Ví dụ — In bảng cửu chương 5

Lặp i từ 1 đến 10:

  In ra "5 × i = kết quả"

Thay vì viết 10 dòng lệnh riêng, chỉ cần một vòng lặp với 10 lần.

💡 Cẩn thận

Vòng lặp phải có điều kiện dừng rõ ràng. Nếu không, chương trình sẽ chạy mãi (vòng lặp vô hạn) và không bao giờ kết thúc.

Sơ đồ khối là gì?

Sơ đồ khối (flowchart) là cách vẽ thuật toán bằng các hình và mũi tên. Mỗi hình đại diện cho một loại thao tác, giúp người đọc nắm luồng xử lý mà không cần đọc code.

Các ký hiệu sơ đồ khối
Các ký hiệu chuẩn trong sơ đồ khối

Các ký hiệu thường dùng:

Bầu dục Bắt đầu / Kết thúc
Hình chữ nhật Thao tác, tính toán
Hình thoi Điều kiện, quyết định
Hình bình hành Nhập / Xuất dữ liệu

Các khối nối với nhau bằng mũi tên chỉ hướng luồng thực hiện — từ trên xuống hoặc từ trái sang phải.

Cách vẽ sơ đồ khối

Để vẽ sơ đồ khối đúng và dễ đọc, hãy làm theo quy trình sau:

  1. Xác định bài toán — đầu vào, đầu ra và yêu cầu cần đạt.
  2. Liệt kê các bước — viết thuật toán bằng lời trước khi vẽ.
  3. Chọn ký hiệu phù hợp — thao tác, điều kiện, nhập/xuất.
  4. Nối bằng mũi tên — thể hiện thứ tự và nhánh rẽ.
  5. Kiểm tra lại — truy vết từng nhánh xem có đúng logic không.
📌 Ví dụ — Sơ đồ tìm số lớn hơn giữa a và b
⬭ Bắt đầu ↓ ▱ Nhập a, b ↓ ◇ a > b ? ↙ ↘ Đúng Sai ↓ ↓ ▭ max=a ▭ max=b ↘ ↙ ▱ In max ↓ ⬭ Kết thúc

Liên hệ với Scratch và lập trình

Trong Scratch, mỗi loại khối lệnh tương ứng với một dạng luồng lệnh:

Dữ liệu qua xử lý thành thông tin
Thuật toán biến dữ liệu đầu vào thành kết quả có ý nghĩa

Trước khi kéo khối lệnh, hãy thử vẽ sơ đồ khối trên giấy. Thói quen này giúp bạn suy nghĩ kỹ hơn, tránh mắc lỗi logic và dễ sửa khi gặp vấn đề.

💡 Lời kết

Thuật toán là bản thiết kế, luồng lệnh là đường đi, sơ đồ khối là bản đồ. Hãy luyện tập vẽ sơ đồ cho các bài toán đời thường — từ nấu mì, sắp xếp sách, đến làm bài tập — để tư duy lập trình trở nên tự nhiên!